/**
 * @file frame.h
 * Funções de criar frame de method; inserir e retirar opcode da pilha.
 */

#ifndef _FRAME_H_
#define _FRAME_H_

#include "common.h"

/**
 * Cria um frame.
 *
 * @param method O método
 * @param cp O constant pool
 * @param method_index O índice do método no constant pool
 * @return O novo frame criado
 */
method_frame * new_frame(method_info *method, cp_info *cp, u4 method_index);

/**
 * Insere 32bits na pilha do frame.
 *
 * @param data O dado a ser inserido
 */
void push_op(u4 data);

/**
 * Retira 32bits da pilha do frame.
 *
 * @return O dado que estava no topo
 */
u4 pop_op(void);

#endif
